//@author A0101119Y
#ifndef GCALAUTHHANDLER_H
#define GCALAUTHHANDLER_H

#include <string>
#include <vector>
#include <map>
#include <regex>
#include <algorithm>
#include "GCalVariableMgr.h"
#include "GAccountsRequestAgent.h"
#include "CommonObjects.h"

namespace Twentyfifth {
	class GCalAuthHandler {
	protected:
		static const std::string GCALCMD_LOGIN;
		static const std::string GCALCMD_INFO;
		static const std::string GCALCMD_LOGOUT;
		static const std::string LABEL_EMAIL_ADDRESS;
		static const std::string MSG_ERROR_ALREADY_LOGGED_IN;
		static const std::string MSG_INFORMATION_LOGGED_IN;
		static const std::string MSG_INFORMATION_NOT_LOGGED_IN;
		static const std::string MSG_SUCCESS_LOGOUT;
		static const std::string PLACEHOLDER_STRING;

		GAccountsRequestAgent accrequestagent;
	public:
		Status login();
		Status info();
		Status logout();
		bool isLoggedIn();
	};
}

#endif